package MTT::Form::Template;

use HTML::FormHandler::Moose;
extends 'HTML::FormHandler::Model::DBIC';
with 'HTML::FormHandler::Render::Simple';
use namespace::autoclean;

use utf8;

use Data::Dumper;
use MTT::Libs::ObjectAccess;

has '+item_class' => ( default => 'AccessObject' );

#has '+action' => ( default => '/users/register' );

has 'name' => ( is => 'ro', default => 'templateForm' );


has_field 'switch_type' => ( 
	type => 'Multiple', 
	label => '', 
	size => 13, 
	style => 'width: 175px', 
	disabled => 0,
	javascript => 'onchange="get_switches(this)"' );
has_field 'switch' => ( type => 'Multiple', label => '', size => 13, style => 'width: 230px' );
has_field 'switch_do' => ( type => 'Multiple', label => '', size => 13, style => 'width: 230px' );

has_field 'date_from' => ( type => 'Text', label => 'Начальная дата' );
has_field 'date_to' => ( type => 'Text', label => 'Конечная дата' );

has_field 'company_box' => ( type => 'Checkbox', label => 'Компания' );
has_field 'company' => ( type => 'Multiple', label => '', style => 'width: 230px' );
has_field 'city_box' => ( type => 'Checkbox', label => 'Город' );
has_field 'city' => ( type => 'Multiple', label => '', style => 'width: 230px' );
has_field 'region_box' => ( type => 'Checkbox', label => 'Регион' );
has_field 'region' => ( type => 'Multiple', label => '', style => 'width: 230px' );
has_field 'federal_box' => ( type => 'Checkbox', label => 'Округ' );
has_field 'federal' => ( type => 'Multiple', label => '', style => 'width: 230px' );

has_field 'run_report' => ( type => 'Submit', value => 'Запустить отчет' );
has_field 'save_report' => ( type => 'Submit', value => 'Сохранить шаблон' );
has_field 'save_report_as' => ( type => 'Submit', value => 'Сохранить шаблон как' );

sub options_switch_type {
	my ($self) = @_;
	return unless $self->ctx;

	my @options;
#warn "----- 13 ----->>>\n" . Dumper( $self->ctx->stash->{switches} );	
	if ( $self->ctx->stash->{switches}->{type} ) {
		foreach my $type ( @{ $self->ctx->stash->{switches}->{type} } ) {
			push @options, { value => $type->id, label => $type->type };
		}
	}
	$self->field('switch_type')->disabled(1) if ( $self->ctx->stash->{switches}->{switch_do} );
=pod
	my @options;
	foreach my $obj_type ( $self->schema->resultset('SwitchType')->all() ) {

		next unless MTT::Libs::ObjectAccess->instance->check_objects_access( $self->ctx, 'Оборудование', $obj_type->id ) 
						|| $self->ctx->check_user_roles('admin');

		push @options, { value => $obj_type->id, label => $obj_type->type };
	}
=cut
warn "----- 13 ----->>>" . Dumper(@options);
	return @options;
}

sub options_switch {
	my ($self) = @_;
	return unless $self->ctx;

	my @options;
#	if ( $self->ctx->stash->{switches}->{type} ) {
#		foreach my $switch ( @{ $self->ctx->stash->{switches}->{switch} } ) {
#			push @options, { value => $switch->id, label => $switch->type };
#		}
#	}
=pod
	my $sec = MTT::Libs::ObjectAccess->instance;

	my $perm_id   = $sec->permitted_objects($self->ctx, 'Оборудование');

	my @options;
	foreach my $id_switch ( @$perm_id ) {
		my $switch = $self->schema->resultset('Switch')->find($id_switch);
		push @options, { value => $switch->id, label => $switch->host_code };
	}
=cut

	return @options;
}

sub options_switch_do {
	my ($self) = @_;
	return unless $self->ctx;

	my @options;
	if ( $self->ctx->stash->{switches}->{switch_do} ) {
		foreach my $switch ( @{ $self->ctx->stash->{switches}->{switch_do} } ) {
			push @options, { value => $switch->id, label => $switch->descr };
		}
	}
=pod
	my $sec = MTT::Libs::ObjectAccess->instance;

	my $perm_id   = $sec->permitted_objects($self->ctx, 'Оборудование');

	my @options;
	foreach my $id_switch ( @$perm_id ) {
		my $switch = $self->schema->resultset('Switch')->find($id_switch);
		push @options, { value => $switch->id, label => $switch->host_code };
	}
=cut
warn "----- 23 ----->>>" . Dumper(@options);
	return @options;
}

sub parameters {
	my ($self) = @_;
	
	return {
		params => [
			[ 'BHCTIME', 'Начало ЧНН' ],
			[ 'BHLLOAD', 'Суммарная разговорная нагрузка' ],
			[ 'ERLANG', 'Пропускная способнось направления' ],
			[ 'MATTEMPTBHCA', 'Попытки занятия' ],
			[ 'MLOAD', 'Энтенсивность нагрузки, Эрл' ],
			[ 'NBLOCKDEV', 'Число недоступных каналов' ],
			[ 'NCONVSEC', 'Время разговора' ],
			[ 'NDEV', 'Число каналов' ],
			[ 'NDEVLASTREQ', 'Требуемое число каналов для потерь' ],
			[ 'NDEVREQ', 'Требуемое число каналов' ],
			[ 'NSEIZREQ', 'Время занятия, сек' ],
			[ 'PABAND', 'Отказы для трансгруппы, %' ],
			[ 'PANSW', 'КЗО, %' ],
			[ 'PCALCLOST', 'Рассчетная вероятность потерь, %' ],
			[ 'PCHANNELUSAGE', 'КИК, %' ],
			[ 'PLOAD', 'Коэффициент концентрации нагрузки' ],
			[ 'PLOST', 'Потери на пути последнего выбора' ],
			[ 'SUMLOAD', 'Суммарная нагрузка за период' ],
		],

		groups => [
			[ 'Компания' ],
			[ 'Net Type' ],
			[ 'Route Addr' ],
			[ 'Route Name' ],
			[ 'Switch Name' ],
			[ 'Город' ],
			[ 'Регион' ],
			[ 'Округ' ],
			[ 'Дата' ],
			[ 'Время' ],
			[ 'Route Type' ],

		]
	};
}

__PACKAGE__->meta->make_immutable;
1;


